1. Field of the Invention
The invention relates to the data storage devices, such as RAID storage arrays. More particularly, the invention relates to controllers, such as RAID controllers, used with data storage arrays.
2. Description of the Related Art
A storage array or disk array is a data storage device that includes multiple disk drives or similar persistent storage units. A storage array can allow relatively large amounts of data to be stored in an efficient manner. A storage array also can provide redundancy to promote reliability, as in the case of a Redundant Array of Inexpensive Disks (RAID) storage array. A storage array commonly also includes a suitable enclosure, power supply, one or more controllers (typically in the form of one or more circuit boards), and interfaces to connect the storage array to an external host, such as a computer or network device. The controller, such as a RAID controller, includes the intelligence or logic (i.e., a client) that causes the storage array to read or write data to or from its persistent storage in response to requests received from an external host.
Various RAID controllers are deployed in a wide variety data storage device brands. These controllers are programmed with read-only memory (ROM) images that contain various firmware. These ROM images or firmware images include various sub-modules that are executed by various hardware parts during operation of the RAID controller. For example, such sub-modules can include a boot loader sub-module, a configuration sub-module, a RAID firmware code sub-module, and a Serial Attached SCSI (SAS) chip firmware code sub-module. Each firmware sub-module typically includes executable code, an associated header, and one or more additional images of non-volatile data (NVDATA). This non-volatile data contains various critical parameters that define the way the hardware behaves, and includes various parameters of interest, such as drive strengths and slew rates of Physical Layer (PHY) signals. These values, in turn, are programmed into one or more configuration registers of the particular firmware code sub-module.
Whenever RAID controller firmware is released, the firmware includes standard settings of NVDATA values and other groups of settings that are tested for the appropriate host based adapter controller. When original equipment manufacturer (OEM) customers use this firmware on their particular platforms, e.g., RAID On Mother Board (ROMB) platforms, the firmware often does not perform as well as the firmware could because NVDATA values and other groups of settings often need to be reconfigured or adjusted as per the track layout on the motherboard or elsewhere on the platform. For example, RAID controller firmware often needs to be reconfigured based upon the particular hardware design of the controller.
Various groups of settings, including NVDATA values, are relatively sensitive to the track layout and track length on the controller circuit board, and can vary from one hardware configuration to another hardware configuration. Proper signal analysis (e.g., “eye-diagram” analysis) using highly sophisticated instrumentation usually is the only way that these values can be determined for the particular hardware configuration. Therefore, each released version of RAID controller firmware typically needs to be modified with appropriate group settings values, such as appropriate NVDATA values.
Conventional methods for addressing this modification issue typically involve rebuilding the entire RAID controller firmware image using the changed NVDATA values. However, such a rebuilding process involves checking-out and checking-in source files, and creating new child streams if the RAID controller firmware version has changed. The rebuilding process also involves building the new sub-module and then concatenating this sub-module with other sub-modules to build the entire firmware image. This rebuilding process not only involves unnecessary time-consuming steps, but also introduces certain administrative overhead for tracking individual source files.